#include<stdio.h>
#include<stdlib.h>
#include<string.h>

// @ 二维数组

void test1(){
    int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

    int arr2[3][3] = {1,2,3,4,5,6,7,8,9};
    int arr3[][3] = {1,2,3,4,5,6,7,8,9};

    printf("%d\n", sizeof(arr));

    // 除了两种特殊情况外， 二位数组名 是指向第一个一维数组  数组指针
    // sizeof
    // 数组名取地址 &arr

    // printf("%d\n", &arr);
    // printf("%d\n", &arr+1);  // 二维数组的数组指针

    // int (*p)[3][3] = &arr;  


    int (*pArray)[3] = arr;

    printf("%d\n",  arr[1][2]);
    printf("%d\n",  (*(pArray+1))[2] );
    printf("%d\n",  *(*(pArray+1) +2) );

}

// @ 二维数组做参数

void printArray(int arr[3][3], int row,int col){   // int (*arr)[3]
    for(int i=0;i<row;i++){
        for(int j=0;j<col;j++){
            // printf("%d ", arr[i][j]);
            printf("%d ", *(*(arr+i)+j) );
        }
        printf("\n");
    }
}

void test2(){
    int arr[3][3] = {{1,2,3},{4,5,6},{7,8,9}};

    printArray(arr,3,3);
}




void main(){

    // test1();

    test2();

}